<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>17.使用工厂函数创建对象</title>
</head>

<body>
  <script>
    // 在函数中返回对象的函数称为工厂函数，工厂函数有以下优点

    //  - 减少重复创建相同类型对象的代码
    //  - 修改工厂函数的方法影响所有同类对象
    // 使用字面量创建对象需要复制属性与方法结构
    const xj = {
      name: "向军",
      show () {
        console.log(this.name);
      }
    };
    const hd = {
      name: "后盾人",
      show () {
        console.log(this.name);
      }
    };
    //使用工厂函数可以简化这个过程
    function user (name,age) {
      return {
        name,
        age,
        // 修改工厂函数，可以影响所有使用工厂函数创建的对象
        show () {
          console.log(this.name + 'houdunren.com');
        },
        info() {
          console.log(`${this.name}的年龄是${this.age}`);
        }
      };
    }

    const lisi = user("李四",17);
    lisi.show();
    lisi.info();
    const xj2 = user("向军",18);
    xj2.show();
    xj2.info();
  </script>
</body>

</html>